<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
	</head>
	<body>

	</body>
	<script>
		function dateFormatter(newDate, s1, s2, flag) {

			let date = newDate || new Date()
			// 获取年
			let year = date.getFullYear()
			// 获取月
			let month = date.getMonth() + 1 //月是从0-11，所以0就是1月要+1
			//获取日
			let day = date.getDate()
			//获取时
			let hours = date.getHours()
			//获取分
			let minutes = date.getMinutes()
			// //获取秒
			let seconds = date.getSeconds()
			// 小于10做补0操作

			// 月
			month = month < 10 ? "0" + month : month
			//日
			day = day < 10 ? "0" + day : day
			//时
			hours = hours < 10 ? "0" + hours : hours
			//分
			minutes = minutes < 10 ? "0" + minutes : minutes
			//秒
			seconds = seconds < 10 ? "0" + seconds : seconds

			if (!s1) { //如果只传入参数或者什么都没传就默认返回所有时间
				return year + '/' + month + '/' + day + " " + hours + ':' + minutes + ':' + seconds
			} else {

				if (flag && flag !== '' && flag !== ' ') { // 判断是否有flag

					if (flag === 'hsm') { // 判断是否返回时分秒
						return hours + s2 + minutes + s2 + seconds

					} else if (flag === 'ymd') { // 判断是否返回年月日

						return year + s1 + month + s1 + day
					} else { // 传入错误抛出错误

						throw ('flag incoming error')
					}

				} else {
					// 如果没有flag判断是否有第三个参数，决定返回全部时间还年月日
					// 判断是是否需要返回时分秒
					if (s2 && s2 !== '' && s2 !== ' ') {
						return year + s1 + month + s1 + day + " " + hours + s2 + minutes + s2 + seconds
					} else {
						// 不需要返回时分秒，只返回年月日
						return year + s1 + month + s1 + day
					}
				}
			}

		}

		// 参数1 : 时间
		// 参数2 : 分隔符（年月日）
		// 参数3 : 分隔符（时分秒）
		// 参数4 : 返回类型
		let date = dateFormatter() //什么都不传也会给你返回默认当前时间的格式化
		let date1 = dateFormatter(new Date()) //传入到第一个参数默认返回格式
		let date2 = dateFormatter(new Date(), '-') //传入到第二个参数表示只返回年月日
		let date3 = dateFormatter(new Date(), '-', '/') //传入到第三个参数表示返回年月日时分秒
		let date4 = dateFormatter(new Date(), '-', ':', 'hsm') //传入到第四个参数，“hsm”表示只返回时分秒，“ymd”表示返回年月日

		console.log(date)
		console.log(date1)
		console.log(date2)
		console.log(date3)
		console.log(date4)
	</script>
</html>